---
title: Nucleo
description: Configurazione di base di Ultracite con regole di linting agnostiche rispetto al framework.
---

La configurazione core di Ultracite fornisce un set completo di regole di linting agnostiche rispetto al framework e impostazioni di formattazione. Questa è la base che tutte le altre configurazioni specifiche per framework estendono.

## Installazione

La configurazione core è inclusa automaticamente quando esegui:

```bash
npx ultracite init
```

Oppure aggiungila manualmente al tuo `biome.jsonc`:

```jsonc title="biome.jsonc"
{
  "extends": ["ultracite/core"]
}
```

## Panoramica

La configurazione core include centinaia di regole di linting rigorose che coprono:

- **Accessibilità (a11y)**: Applicare attributi ARIA validi, HTML semantico e navigazione da tastiera
- **Complessità**: Ridurre la complessità cognitiva e imporre le best practice
- **Correttezza**: Prevenire errori comuni e imporre la sicurezza dei tipi
- **Prestazioni**: Ottimizzare il codice per migliori prestazioni di runtime
- **Sicurezza**: Prevenire vulnerabilità di sicurezza
- **Stile**: Imporre uno stile di codice coerente
- **Sospetto**: Individuare pattern sospetti che potrebbero indicare bug

## Impostazioni del Formatter

- **Indentazione**: 2 spazi
- **Larghezza linea**: 80 caratteri
- **Fine linea**: LF (stile Unix)
- **Punto e virgola**: Sempre richiesti
- **Virgolette**: Virgolette doppie per JavaScript/TypeScript e JSON
- **Virgole finali**: Stile ES5 (array/oggetti multilinea)
- **Parentesi per arrow**: Includere sempre le parentesi

## Caratteristiche chiave

### Rigidità TypeScript

La configurazione core abilita i controlli strict di TypeScript:

- Scoraggia l'uso di `any` (`noExplicitAny: error`)
- Richiede la gestione di `null/undefined`
- Preferisce tipi espliciti in certe situazioni
- Impone la sicurezza dei tipi in tutto il codebase

### Equivalenti consigliati di ESLint

Regole comuni di best practice sono incluse:

- Nessuna variabile non utilizzata (`noUnusedVariables: error`)
- Nessun import non utilizzato (`noUnusedImports: error`)
- Nessuna eval esplicita (`noGlobalEval: error`)
- Nessuna prototype pollution (`noPrototypeBuiltins: error`)

### Accessibilità per default

Regole equivalenti agli standard di accessibilità:

- Gli attributi ARIA devono essere validi
- Preferire elementi HTML semantici
- Richiesto il supporto alla navigazione da tastiera
- Testo alternativo per le immagini richiesto

### Supporto Node.js

Gestione specifica per l'ambiente:

- Riconosce i globali di Node.js (`module`, `process`)
- Impone il protocollo `node:` per i moduli built-in
- Supporta sia CommonJS che ESM

## Riferimento completo delle regole

### Accessibilità (a11y)

| Rule | Setting | Description |
|------|---------|-------------|
| `noAccessKey` | `error` | Imporre che l'attributo `accessKey` non venga usato su alcun elemento HTML. |
| `noAriaHiddenOnFocusable` | `error` | Imporre che `aria-hidden="true"` non sia impostato su elementi focalizzabili. |
| `noAriaUnsupportedElements` | `error` | Imporre che gli elementi che non supportano ruoli, stati e proprietà ARIA non abbiano quegli attributi. |
| `noAutofocus` | `off` | Imporre che la prop `autoFocus` non venga usata sugli elementi. |
| `noDistractingElements` | `error` | Impone che non vengano usati elementi distraenti. |
| `noHeaderScope` | `error` | La prop scope dovrebbe essere usata solo sugli elementi `<th>`. |
| `noInteractiveElementToNoninteractiveRole` | `error` | Imporre che ruoli ARIA non interattivi non siano assegnati a elementi HTML interattivi. |
| `noLabelWithoutControl` | `error` | Imporre che un elemento o componente label abbia un'etichetta testuale e un input associato. |
| `noNoninteractiveElementInteractions` | `error` | Vietare l'uso di event handler su elementi non interattivi. |
| `noNoninteractiveElementToInteractiveRole` | `error` | Imporre che ruoli ARIA interattivi non siano assegnati a elementi HTML non interattivi. |
| `noNoninteractiveTabindex` | `error` | Imporre che `tabIndex` non sia assegnato a elementi HTML non interattivi. |
| `noPositiveTabindex` | `error` | Impedire l'uso di numeri interi positivi nella proprietà `tabIndex`. |
| `noRedundantAlt` | `error` | Imporre che la prop alt di img non contenga le parole `image`, `picture` o `photo`. |
| `noRedundantRoles` | `error` | Imporre che la prop role esplicita non sia uguale al ruolo implicito/predefinito di un elemento. |
| `noStaticElementInteractions` | `error` | Imporre che elementi statici visibili (ad es. `<div>`) che hanno gestori di click usino l'attributo role valido. |
| `noSvgWithoutTitle` | `error` | Impone l'uso dell'elemento title per l'elemento `svg`. |
| `useAltText` | `error` | Imporre che tutti gli elementi che richiedono testo alternativo abbiano informazioni significative da trasmettere all'utente finale. |
| `useAnchorContent` | `error` | Imporre che gli anchor abbiano contenuto e che il contenuto sia accessibile ai lettori di schermo. |
| `useAriaActivedescendantWithTabindex` | `error` | Imporre che `tabIndex` sia assegnato ad elementi HTML non interattivi con aria-activedescendant. |
| `useAriaPropsForRole` | `error` | Imporre che gli elementi con ruoli ARIA abbiano tutti gli attributi ARIA richiesti per quel ruolo. |
| `useAriaPropsSupportedByRole` | `error` | Imporre che le proprietà ARIA siano valide per i ruoli supportati dall'elemento. |
| `useButtonType` | `error` | Impone l'uso dell'attributo `type` per l'elemento button. |
| `useFocusableInteractive` | `error` | Gli elementi con un ruolo interattivo e gestori di interazione devono essere focalizzabili. |
| `useHeadingContent` | `error` | Imporre che gli elementi heading (`h1`, `h2`, ecc.) abbiano contenuto e che il contenuto sia accessibile ai lettori di schermo. |
| `useHtmlLang` | `error` | Imporre che l'elemento `html` abbia l'attributo `lang`. |
| `useIframeTitle` | `error` | Impone l'uso dell'attributo title per l'elemento iframe. |
| `useKeyWithClickEvents` | `error` | Imporre che `onClick` sia accompagnato da almeno uno dei seguenti: `onKeyUp`, `onKeyDown`, `onKeyPress`. |
| `useKeyWithMouseEvents` | `error` | Imporre che `onMouseOver` / `onMouseOut` siano accompagnati da `onFocus` / `onBlur`. |
| `useMediaCaption` | `error` | Impone che elementi audio e video abbiano una traccia per i sottotitoli. |
| `useSemanticElements` | `error` | Rileva l'uso di attributi role in elementi JSX e suggerisce di usare elementi semantici invece. |
| `useValidAnchor` | `error` | Imporre che tutti gli anchor siano validi e navigabili. |
| `useValidAriaProps` | `error` | Assicura che le proprietà ARIA `aria-*` siano tutte valide. |
| `useValidAriaRole` | `error` | Gli elementi con ruoli ARIA devono usare un ruolo ARIA valido e non astratto. |
| `useValidAriaValues` | `error` | Imporre che i valori di stato e proprietà ARIA siano validi. |
| `useValidAutocomplete` | `error` | Usare valori validi per l'attributo autocomplete sugli input. |
| `useValidLang` | `error` | Assicurare che il valore passato all'attributo `lang` sia un corretto codice ISO di lingua e/o paese. |
| `useGenericFontNames` | `error` | Vietare l'assenza della keyword della famiglia generica all'interno delle famiglie di font (CSS). |

### Complessità

| Rule | Setting | Description |
|------|---------|-------------|
| `noAdjacentSpacesInRegex` | `error` | Vietare l'uso poco chiaro di caratteri spazio consecutivi nei literal di espressioni regolari. |
| `noArguments` | `error` | Vietare l'uso di arguments. |
| `noBannedTypes` | `error` | Vietare alias di tipi primitivi e tipi fuorvianti. |
| `noCommaOperator` | `error` | Vietare l'operatore virgola. |
| `noEmptyTypeParameters` | `error` | Vietare parametri di tipo vuoti in alias di tipo e interfacce. |
| `noExcessiveCognitiveComplexity` | `error` | Vietare funzioni che superano un dato punteggio di Complessità Cognitiva. |
| `noExcessiveLinesPerFunction` | `off` | Limitare il numero di righe di codice in una funzione. |
| `noExcessiveNestedTestSuites` | `error` | Questa regola impone una profondità massima per i `describe()` annidati nei file di test. |
| `noExtraBooleanCast` | `error` | Vietare conversioni booleane non necessarie. |
| `noFlatMapIdentity` | `error` | Vietare l'uso di callback non necessari in flatMap. |
| `noForEach` | `error` | Preferire l'istruzione `for...of` invece di `Array.forEach`. |
| `noImplicitCoercions` | `off` | Vietare conversioni di tipo in forma breve. |
| `noImportantStyles` | `off` | Vietare l'uso dello stile `!important` (CSS). |
| `noStaticOnlyClass` | `error` | Questa regola segnala quando una classe non ha membri non statici. |
| `noThisInStatic` | `error` | Vietare `this` e `super` in contesti statici. |
| `noUselessCatch` | `error` | Vietare clausole catch non necessarie. |
| `noUselessConstructor` | `error` | Vietare costruttori non necessari. |
| `noUselessContinue` | `error` | Evitare l'uso di continue non necessari. |
| `noUselessEmptyExport` | `error` | Vietare export vuoti che non cambiano nulla in un file modulo. |
| `noUselessEscapeInRegex` | `error` | Vietare sequenze di escape non necessarie nei literal di espressioni regolari. |
| `noUselessFragments` | `error` | Vietare fragment non necessari. |
| `noUselessLabel` | `error` | Vietare etichette non necessarie. |
| `noUselessLoneBlockStatements` | `error` | Vietare blocchi annidati non necessari. |
| `noUselessRename` | `error` | Vietare il rinominare import, export e assegnazioni destrutturate con lo stesso nome. |
| `noUselessStringConcat` | `error` | Vietare concatenazioni non necessarie di stringhe o template literal. |
| `noUselessStringRaw` | `error` | Vietare l'uso non necessario di `String.raw` in template string senza sequenze di escape. |
| `noUselessSwitchCase` | `error` | Vietare case inutili nelle istruzioni switch. |
| `noUselessTernary` | `error` | Vietare operatori ternari quando esistono alternative più semplici. |
| `noUselessThisAlias` | `error` | Vietare alias inutili di `this`. |
| `noUselessTypeConstraint` | `error` | Vietare l'uso di `any` o `unknown` come vincolo di tipo. |
| `noUselessUndefinedInitialization` | `error` | Vietare l'inizializzazione di variabili a `undefined`. |
| `noVoid` | `error` | Vietare l'uso dell'operatore `void`, che non è un operatore familiare. |
| `useArrowFunction` | `error` | Usare arrow function al posto di function expression. |
| `useDateNow` | `error` | Usare `Date.now()` per ottenere il numero di millisecondi dall'Epoca Unix. |
| `useFlatMap` | `error` | Promuove l'uso di `.flatMap()` quando `map().flat()` sono usati insieme. |
| `useIndexOf` | `error` | Preferire `Array#{indexOf,lastIndexOf}()` rispetto a `Array#{findIndex,findLastIndex}()` quando si cerca l'indice di un elemento. |
| `useLiteralKeys` | `error` | Imporre l'uso di accesso letterale alle proprietà invece dell'accesso con proprietà computate. |
| `useNumericLiterals` | `error` | Vietare `parseInt()` e `Number.parseInt()` a favore dei literal binari, ottali ed esadecimali. |
| `useOptionalChain` | `error` | Imporre l'uso della optional chaining concisa invece di espressioni logiche concatenate. |
| `useRegexLiterals` | `error` | Imporre l'uso dei literal di espressioni regolari invece del costruttore `RegExp` se possibile. |
| `useSimpleNumberKeys` | `error` | Vietare nomi di membri oggetto con numeri letterali non in base 10 o che usano underscore come separatore. |
| `useSimplifiedLogicExpression` | `error` | Scartare termini ridondanti dalle espressioni logiche. |
| `useWhile` | `error` | Imporre l'uso dei loop while invece dei for quando l'inizializzatore e l'update non sono necessari. |

### Correttezza

| Rule | Setting | Description |
|------|---------|-------------|
| `noConstAssign` | `error` | Previene la riassegnazione di variabili dichiarate come const. |
| `noConstantCondition` | `error` | Vietare espressioni costanti nelle condizioni. |
| `noConstantMathMinMaxClamp` | `error` | Vietare l'uso di `Math.min` e `Math.max` per limitare un valore quando il risultato è costante. |
| `noConstructorReturn` | `error` | Vietare il ritorno di un valore da un costruttore. |
| `noEmptyCharacterClassInRegex` | `error` | Vietare classi di caratteri vuote nei literal di espressioni regolari. |
| `noEmptyPattern` | `error` | Vietare pattern di destrutturazione vuoti. |
| `noGlobalDirnameFilename` | `error` | Vietare l'uso di `__dirname` e `__filename` nello scope globale. |
| `noGlobalObjectCalls` | `error` | Vietare la chiamata di proprietà dell'oggetto globale come funzioni. |
| `noInnerDeclarations` | `error` | Vietare dichiarazioni di funzione e `var` accessibili fuori dal loro blocco. |
| `noInvalidBuiltinInstantiation` | `error` | Assicurare che i builtins siano istanziati correttamente. |
| `noInvalidConstructorSuper` | `error` | Prevenire l'uso errato di `super()` all'interno delle classi. |
| `noInvalidDirectionInLinearGradient` | `error` | Vietare valori di direzione non standard per funzioni linear-gradient (CSS). |
| `noInvalidGridAreas` | `error` | Vietare aree di griglia nominate non valide in CSS Grid Layouts (CSS). |
| `noInvalidPositionAtImportRule` | `error` | Vietare l'uso delle at-rule `@import` in posizioni non valide (CSS). |
| `noInvalidUseBeforeDeclaration` | `error` | Vietare l'uso di variabili e parametri di funzione prima della loro dichiarazione. |
| `noMissingVarFunction` | `error` | Vietare la mancanza della funzione var per le variabili CSS (CSS). |
| `noNodejsModules` | `off` | Vietare l'uso dei moduli builtin di Node.js. |
| `noNonoctalDecimalEscape` | `error` | Vietare le sequenze di escape `\8` e `\9` nelle stringhe. |
| `noPrecisionLoss` | `error` | Vietare numeri letterali che causano perdita di precisione. |
| `noPrivateImports` | `off` | Limitare gli import di export privati. |
| `noProcessGlobal` | `off` | Vietare l'uso del globale `process`. |
| `noRestrictedElements` | `error` | Vietare l'uso di elementi configurati. |
| `noSelfAssign` | `error` | Vietare assegnazioni dove entrambi i lati sono esattamente uguali. |
| `noSetterReturn` | `error` | Vietare il ritorno di un valore da un setter. |
| `noStringCaseMismatch` | `error` | Vietare il confronto di espressioni che modificano il case della stringa con valori non conformi. |
| `noSwitchDeclarations` | `error` | Vietare dichiarazioni lessicali all'interno delle clausole switch. |
| `noUndeclaredDependencies` | `off` | Vietare l'uso di dipendenze non specificate nel `package.json`. |
| `noUndeclaredVariables` | `error` | Impedire l'uso di variabili non dichiarate all'interno del documento. |
| `noUnknownFunction` | `error` | Vietare funzioni di valore CSS sconosciute (CSS). |
| `noUnknownMediaFeatureName` | `error` | Vietare nomi di media feature sconosciuti (CSS). |
| `noUnknownProperty` | `error` | Vietare proprietà sconosciute (CSS). |
| `noUnknownPseudoClass` | `error` | Vietare pseudo-classi sconosciute (CSS). |
| `noUnknownPseudoElement` | `error` | Vietare pseudo-elementi sconosciuti (CSS). |
| `noUnknownTypeSelector` | `error` | Vietare selettori di tipo sconosciuti (CSS). |
| `noUnknownUnit` | `error` | Vietare unità CSS sconosciute (CSS). |
| `noUnmatchableAnbSelector` | `error` | Vietare selettori An+B non abbinabili (CSS). |
| `noUnreachable` | `error` | Vietare codice non raggiungibile. |
| `noUnreachableSuper` | `error` | Assicurare che `super()` venga chiamato esattamente una volta su ogni percorso di codice in un costruttore di classe prima che venga usato. |
| `noUnsafeFinally` | `error` | Vietare istruzioni di controllo del flusso nei blocchi finally. |
| `noUnsafeOptionalChaining` | `error` | Vietare l'uso della optional chaining in contesti dove il valore undefined non è consentito. |
| `noUnusedFunctionParameters` | `error` | Vietare parametri di funzione non utilizzati. |
| `noUnusedImports` | `error` (safe fix override) | Vietare import non utilizzati. |
| `noUnusedLabels` | `error` | Vietare etichette non utilizzate. |
| `noUnusedPrivateClassMembers` | `error` | Vietare membri privati di classe non usati. |
| `noUnusedVariables` | `error` | Vietare variabili non utilizzate. |
| `noVoidTypeReturn` | `error` | Vietare il ritorno di un valore da una funzione con tipo di ritorno `void`. |
| `useGraphqlNamedOperations` | `error` | Imporre la specifica del nome delle operazioni GraphQL. |
| `useImageSize` | `error` | Impone che gli elementi `<img>` abbiano sia gli attributi width che height. |
| `useImportExtensions` | `off` | Imporre estensioni di file per import relativi. |
| `useIsNan` | `error` | Richiedere chiamate a `isNaN()` quando si verifica NaN. |
| `useJsonImportAttributes` | `off` | Impone l'uso di `{ type: "json" }` per gli import di moduli JSON. |
| `useParseIntRadix` | `error` | Imporre l'uso coerente dell'argomento radix con `parseInt()`. |
| `useSingleJsDocAsterisk` | `error` | Imporre che le linee dei commenti JSDoc inizino con un singolo asterisco, eccetto la prima. |
| `useUniqueElementIds` | `off` | Impedire l'uso di id letterali statici sugli elementi. |
| `useValidForDirection` | `error` | Imporre che la clausola di update del ciclo `for` muova il contatore nella direzione corretta. |
| `useValidTypeof` | `error` | Questa regola verifica che il risultato di un'espressione `typeof` sia confrontato con un valore valido. |
| `useYield` | `error` | Richiedere che le generator function contengano `yield`. |

### Nursery

| Rule | Setting | Description |
|------|---------|-------------|
| `noContinue` | `off` | Vietare le istruzioni continue. |
| `noDeprecatedImports` | `off` | Limitare gli import di export deprecati. |
| `noDuplicateDependencies` | `error` | Impedire l'elencazione di dipendenze duplicate. |
| `noDuplicatedSpreadProps` | `error` | Vietare proprietà duplicate negli spread props. |
| `noEmptySource` | `error` | Vietare file sorgente vuoti. |
| `noEqualsToNull` | `error` | Vietare l'uso di `==` o `!=` per confrontare con `null`. Usare `===` o `!==` invece. |
| `noFloatingPromises` | `off` | Richiedere che le promesse siano gestite appropriatamente. |
| `noForIn` | `off` | Vietare l'iterazione usando un ciclo for-in. |
| `noImportCycles` | `off` | Prevenire cicli di import. |
| `noIncrementDecrement` | `error` | Vietare l'uso degli operatori `++` e `--` (eccetto nell'afterthought dei for). |
| `noJsxLiterals` | `off` | Vietare literal stringa dentro elementi JSX. |
| `noLeakedRender` | `error` | Prevenire valori problematici che vengono renderizzati in JSX (es. 0 o NaN). |
| `noMisusedPromises` | `off` | Vietare l'uso delle Promise in contesti dove sono quasi certamente un errore. |
| `noMultiStr` | `error` | Vietare stringhe multilinea con backslash di continuazione. |
| `noParametersOnlyUsedInRecursion` | `error` | Vietare parametri usati solo nelle chiamate ricorsive. |
| `noProto` | `error` | Vietare l'uso della proprietà `__proto__`. |
| `noShadow` | `error` | Vietare dichiarazioni di variabili che ombreggiano variabili dichiarate nello scope esterno. |
| `noSyncScripts` | `error` | Impedire l'uso di script sincroni. |
| `noTernary` | `off` | Vietare operatori ternari. |
| `noUnnecessaryConditions` | `off` | Vietare condizioni basate sui tipi non necessarie che possono essere determinate staticamente come ridondanti. |
| `noUnresolvedImports` | `off` | Avvisare quando si importano export non esistenti. |
| `noUnusedExpressions` | `error` | Vietare espressioni che non sono né chiamate di funzione né assegnazioni. |
| `noUselessCatchBinding` | `off` | Vietare binding `catch` non usati. |
| `noUselessUndefined` | `error` | Vietare l'uso di `undefined` inutile. |
| `useArraySortCompare` | `off` | Imporre l'uso di una funzione di comparazione in `Array.prototype.sort()`. |
| `useConsistentArrowReturn` | `error` | Imporre corpi di arrow function coerenti nel return. |
| `useConsistentGraphqlDescriptions` | `error` | Richiedere che tutte le descrizioni seguano lo stesso stile (block o inline) nei file GraphQL. |
| `useDeprecatedDate` | `error` | Richiedere che la direttiva `@deprecated` specifichi una data di rimozione. |
| `useExhaustiveSwitchCases` | `off` | Richiedere che gli switch-case siano esaustivi. |
| `useExplicitType` | `off` | Imporre i tipi in funzioni, metodi, variabili e parametri. |
| `useFind` | `error` | Imporre l'uso di `Array.prototype.find()` invece di `Array.prototype.filter()` seguito da `[0]` quando si cerca un singolo risultato. |
| `useMaxParams` | `error` | Imporre un numero massimo di parametri nelle definizioni di funzione. |
| `useSortedClasses` | `error` (safe fix override) | Imporre l'ordinamento delle classi utility CSS. |
| `useSpread` | `error` | Imporre l'uso dell'operatore spread rispetto a `Function.prototype.apply()`. |
| `useUniqueGraphqlOperationName` | `error` | Assicurare che tutte le operazioni GraphQL all'interno di un documento abbiano nomi unici. |

### Prestazioni

| Rule | Setting | Description |
|------|---------|-------------|
| `noAccumulatingSpread` | `error` | Vietare l'uso della sintassi spread (`...`) sugli accumulatori. |
| `noAwaitInLoops` | `off` | Vietare `await` all'interno dei loop. |
| `noBarrelFile` | `error` | Vietare l'uso dei barrel file. |
| `noDelete` | `error` | Vietare l'uso dell'operatore `delete`. |
| `noDynamicNamespaceImportAccess` | `error` | Vietare l'accesso dinamico agli import di namespace. |
| `noNamespaceImport` | `error` | Vietare l'uso degli import di namespace. |
| `noReExportAll` | `off` | Evitare il re-export di tutto. |
| `noUnwantedPolyfillio` | `error` | Prevenire polyfill duplicati da Polyfill.io. |
| `useGoogleFontPreconnect` | `error` | Assicurare l'uso dell'attributo `preconnect` quando si usano Google Fonts. |
| `useTopLevelRegex` | `error` | Richiedere che i literal di regex siano dichiarati a livello top-level. |

### Sicurezza

| Rule | Setting | Description |
|------|---------|-------------|
| `noBlankTarget` | `error` | Vietare l'attributo `target="_blank"` senza `rel="noopener"`. |
| `noDangerouslySetInnerHtml` | `error` | Prevenire l'uso di props JSX pericolose. |
| `noDangerouslySetInnerHtmlWithChildren` | `error` | Segnalare quando un elemento DOM o un componente usa sia children che la prop `dangerouslySetInnerHTML`. |
| `noGlobalEval` | `error` | Vietare l'uso di `eval()` globale. |

### Stile

| Rule | Setting | Description |
|------|---------|-------------|
| `noCommonJs` | `off` | Vietare l'uso del sistema di moduli Common JS a favore degli import in stile ESM. |
| `noDefaultExport` | `off` | Vietare export di default. |
| `noDoneCallback` | `error` | Vietare l'uso di callback nei test e hook asincroni. |
| `noEnum` | `error` | Vietare gli enum TypeScript. |
| `noExportedImports` | `error` | Vietare di esportare una variabile importata. |
| `noImplicitBoolean` | `off` | Vietare valori booleani impliciti negli attributi booleani JSX. |
| `noInferrableTypes` | `error` | Vietare annotazioni di tipo per variabili, parametri e proprietà di classe inizializzate con un'espressione letterale. |
| `noMagicNumbers` | `off` | Segnala l'uso di "magic numbers" — numeri usati direttamente invece di assegnarli a costanti nominate. |
| `noNamespace` | `error` | Vietare l'uso dei namespace di TypeScript. |
| `noNegationElse` | `error` | Vietare la negazione nella condizione di un if se ha una clausola else. |
| `noNestedTernary` | `error` | Vietare espressioni ternarie annidate. |
| `noNonNullAssertion` | `error` | Vietare asserzioni non-null usando l'operatore postfix `!`. |
| `noParameterAssign` | `error` | Vietare la riassegnazione dei parametri di funzione. |
| `noParameterProperties` | `error` | Vietare l'uso di parameter properties nei costruttori di classe. |
| `noProcessEnv` | `off` | Vietare l'uso di `process.env`. |
| `noRestrictedGlobals` | `error` | Questa regola permette di specificare nomi di variabili globali che non vuoi usare nell'applicazione. |
| `noRestrictedImports` | `error` | Vietare moduli specificati quando vengono caricati tramite import o require. |
| `noRestrictedTypes` | `error` | Vietare tipi definiti dall'utente. |
| `noShoutyConstants` | `error` | Vietare l'uso di costanti il cui valore è la versione in maiuscolo del suo nome. |
| `noSubstr` | `error` | Imporre l'uso di `String.slice()` rispetto a `String.substr()` e `String.substring()`. |
| `noUnusedTemplateLiteral` | `error` | Vietare i template literal se interpolazione e gestione di caratteri speciali non sono necessari. |
| `noUselessElse` | `error` | Vietare il blocco else quando il blocco if interrompe precocemente. |
| `noYodaExpression` | `error` | Vietare l'uso di espressioni Yoda. |
| `useArrayLiterals` | `error` | Vietare i costruttori `Array`. |
| `useAsConstAssertion` | `error` | Imporre l'uso di as const rispetto a literal type e annotazione di tipo. |
| `useAtIndex` | `error` | Usare `at()` invece dell'accesso per indice intero. |
| `useBlockStatements` | `error` | Richiede di seguire le convenzioni sulle parentesi graffe. |
| `useCollapsedElseIf` | `error` | Imporre l'uso di `else if` invece di if annidati nelle clausole `else`. |
| `useCollapsedIf` | `error` | Imporre l'uso di un singolo `if` invece di if annidati. |
| `useComponentExportOnlyModules` | `off` | Imporre la dichiarazione di componenti solo all'interno di moduli che esportano esclusivamente componenti React. |
| `useConsistentArrayType` | `error` | Richiedere di usare coerentemente `T[]` o `Array<T>`. |
| `useConsistentBuiltinInstantiation` | `error` | Imporre l'uso di new per tutti i builtins, eccetto `String`, `Number` e `Boolean`. |
| `useConsistentCurlyBraces` | `off` | Questa regola impone l'uso coerente delle parentesi graffe dentro gli attributi JSX e i children JSX. |
| `useConsistentMemberAccessibility` | `error` | Richiedere modificatori di accessibilità coerenti su proprietà e metodi di classe. |
| `useConsistentObjectDefinitions` | `error` | Richiedere dichiarazioni coerenti di object literal. |
| `useConst` | `error` | Richiedere dichiarazioni const per variabili assegnate una sola volta. |
| `useDefaultParameterLast` | `error` | Imporre che i parametri di default e i parametri opzionali siano messi alla fine. |
| `useDefaultSwitchClause` | `error` | Richiedere la clausola `default` nelle istruzioni switch. |
| `useDeprecatedReason` | `error` | Richiedere la specifica del reason quando si usa la direttiva `@deprecated`. |
| `useEnumInitializers` | `error` | Richiedere che ogni membro dell'enum abbia il valore inizializzato esplicitamente. |
| `useExplicitLengthCheck` | `off` | Imporre il confronto esplicito della proprietà `length`, `size`, `byteLength` o `byteOffset` di un valore. |
| `useExponentiationOperator` | `error` | Vietare l'uso di `Math.pow` a favore dell'operatore `**`. |
| `useExportType` | `error` | Promuove l'uso di export type per i tipi. |
| `useExportsLast` | `off` | Richiedere che tutti gli export siano dichiarati dopo tutte le istruzioni non-export. |
| `useFilenamingConvention` | `error` | Imporre convenzioni di denominazione per i nomi dei file JavaScript e TypeScript (kebab-case, ASCII). |
| `useForOf` | `error` | Questa regola raccomanda un loop for-of quando in un for loop l'indice è usato per estrarre un elemento dall'array iterato. |
| `useFragmentSyntax` | `error` | Questa regola impone l'uso di `<>...</>` invece di `<Fragment>...</Fragment>`. |
| `useGraphqlNamingConvention` | `error` | Valida che tutti i valori degli enum siano in maiuscolo. |
| `useGroupedAccessorPairs` | `error` | Imporre che getter e setter per la stessa proprietà siano adiacenti in classi e definizioni di oggetti. |
| `useImportType` | `error` | Promuove l'uso di `import type` per i tipi. |
| `useLiteralEnumMembers` | `error` | Richiedere che tutti i membri enum siano valori letterali. |
| `useNamingConvention` | `off` | Regola di convenzione dei nomi (disabilitata). |
| `useNodeAssertStrict` | `error` | Promuove l'uso di `node:assert/strict` rispetto a `node:assert`. |
| `useNodejsImportProtocol` | `error` | Impone l'uso del protocollo `node:` per i moduli builtin di Node.js. |
| `useNumberNamespace` | `error` | Usare le proprietà di `Number` invece di quelle globali. |
| `useNumericSeparators` | `error` | Imporre l'uso di separatori numerici nei literal numerici. |
| `useObjectSpread` | `error` | Preferire object spread rispetto a `Object.assign()` quando si costruiscono nuovi oggetti. |
| `useReadonlyClassProperties` | `error` | Imporre di marcare i membri come readonly se non vengono modificati al di fuori del costruttore. |
| `useSelfClosingElements` | `error` | Prevenire tag di chiusura extra per componenti senza children. |
| `useShorthandAssign` | `error` | Richiedere l'uso della forma abbreviata dell'operatore di assegnazione quando possibile. |
| `useShorthandFunctionType` | `error` | Imporre l'uso dei tipi funzione invece di object type con call signature. |
| `useSingleVarDeclarator` | `off` | Vietare dichiarazioni multiple di variabili nella stessa istruzione. |
| `useSymbolDescription` | `error` | Richiedere un parametro description per `Symbol()`. |
| `useTemplate` | `error` | Preferire template literal rispetto alla concatenazione di stringhe. |
| `useThrowNewError` | `error` | Richiedere `new` quando si lancia un errore. |
| `useThrowOnlyError` | `error` | Vietare il lancio di valori non `Error`. |
| `useTrimStartEnd` | `error` | Imporre l'uso di `String.trimStart()` e `String.trimEnd()` rispetto a `String.trimLeft()` e `String.trimRight()`. |
| `useUnifiedTypeSignatures` | `error` | Vietare firme overload che possono essere unificate in una singola firma. |
| `noDescendingSpecificity` | `error` | Vietare che un selettore a specificità inferiore segua uno a specificità più alta (CSS). |
| `noValueAtRule` | `error` | Vietare l'uso della regola `@value` nei css modules (CSS). |

### Sospetto

| Rule | Setting | Description |
|------|---------|-------------|
| `noAlert` | `error` | Vietare l'uso di `alert`, `confirm` e `prompt`. |
| `noApproximativeNumericConstant` | `error` | Usare costanti standard invece di literal numerici approssimati. |
| `noAssignInExpressions` | `error` | Vietare assegnazioni all'interno delle espressioni. |
| `noAsyncPromiseExecutor` | `error` | Vietare l'uso di una funzione async come executor di Promise. |
| `noBiomeFirstException` | `error` | Impedire l'uso del pattern `!` in prima posizione di `files.includes` nel file di configurazione. |
| `noBitwiseOperators` | `error` | Vietare gli operatori bitwise. |
| `noCatchAssign` | `error` | Vietare la riassegnazione delle eccezioni nelle clausole catch. |
| `noClassAssign` | `error` | Vietare la riassegnazione dei membri di una classe. |
| `noCommentText` | `error` | Impedire che i commenti vengano inseriti come nodi di testo. |
| `noCompareNegZero` | `error` | Vietare il confronto con `-0`. |
| `noConfusingLabels` | `error` | Vietare labeled statements che non sono loop. |
| `noConfusingVoidType` | `error` | Vietare il tipo void fuori da generici o tipi di ritorno. |
| `noConsole` | `off` | Vietare l'uso di `console`. |
| `noConstEnum` | `error` | Vietare const enum di TypeScript. |
| `noConstantBinaryExpressions` | `error` | Vietare espressioni dove l'operazione non influisce sul valore. |
| `noControlCharactersInRegex` | `error` | Impedire caratteri di controllo e alcune sequenze di escape che corrispondono a caratteri di controllo nei literal di espressioni regolari. |
| `noDebugger` | `error` | Vietare l'uso di debugger. |
| `noDocumentCookie` | `error` | Vietare assegnazioni dirette a document.cookie. |
| `noDoubleEquals` | `error` | Richiedere l'uso di `===` e `!==`. |
| `noDuplicateAtImportRules` | `error` | Vietare regole duplicate `@import` (CSS). |
| `noDuplicateCase` | `error` | Vietare etichette case duplicate. |
| `noDuplicateClassMembers` | `error` | Vietare membri di classe duplicati. |
| `noDuplicateCustomProperties` | `error` | Vietare proprietà custom duplicate all'interno di blocchi di dichiarazione (CSS). |
| `noDuplicateElseIf` | `error` | Vietare condizioni duplicate in catene if-else-if. |
| `noDuplicateFields` | `error` | Vietare campi duplicati nelle operazioni GraphQL. |
| `noDuplicateFontNames` | `error` | Vietare nomi duplicati all'interno delle famiglie di font (CSS). |
| `noDuplicateObjectKeys` | `error` | Vietare due chiavi con lo stesso nome dentro gli oggetti. |
| `noDuplicateParameters` | `error` | Vietare nomi di parametri di funzione duplicati. |
| `noDuplicateProperties` | `error` | Vietare proprietà duplicate all'interno di blocchi di dichiarazione (CSS). |
| `noDuplicateSelectorsKeyframeBlock` | `error` | Vietare selettori duplicati all'interno di blocchi keyframe (CSS). |
| `noDuplicateTestHooks` | `error` | Un blocco describe non dovrebbe contenere hook duplicati. |
| `noEmptyBlock` | `error` | Vietare blocchi CSS vuoti (CSS). |
| `noEmptyBlockStatements` | `error` | Vietare blocchi vuoti e static blocks. |
| `noEmptyInterface` | `error` | Vietare la dichiarazione di interfacce vuote. |
| `noEvolvingTypes` | `error` | Vietare che variabili evolvano in tipo any tramite riassegnazioni. |
| `noExplicitAny` | `error` | Vietare l'uso del tipo any. |
| `noExportsInTest` | `error` | Vietare l'uso di export o module.exports nei file che contengono test. |
| `noExtraNonNullAssertion` | `error` | Prevenire l'uso errato dell'operatore di asserzione non-null `!` nei file TypeScript. |
| `noFallthroughSwitchClause` | `error` | Vietare il fallthrough nelle clausole switch. |
| `noFocusedTests` | `error` | Vietare test focalizzati. |
| `noFunctionAssign` | `error` | Vietare la riassegnazione di dichiarazioni di funzione. |
| `noGlobalAssign` | `error` | Vietare assegnazioni ad oggetti nativi e variabili globali in sola lettura. |
| `noGlobalIsFinite` | `error` | Usare `Number.isFinite` invece di `isFinite` globale. |
| `noGlobalIsNan` | `error` | Usare `Number.isNaN` invece di `isNaN` globale. |
| `noImplicitAnyLet` | `error` | Vietare l'uso del tipo any implicito nelle dichiarazioni di variabili. |
| `noImportAssign` | `error` | Vietare l'assegnazione ai binding importati. |
| `noImportantInKeyframe` | `error` | Vietare `!important` non valido all'interno delle dichiarazioni keyframe (CSS). |
| `noIrregularWhitespace` | `error` | Vietare l'uso di caratteri di whitespace irregolari. |
| `noLabelVar` | `error` | Vietare etichette che condividono un nome con una variabile. |
| `noMisleadingCharacterClass` | `error` | Vietare caratteri composti da più code point nella sintassi delle classi di caratteri. |
| `noMisleadingInstantiator` | `error` | Imporre l'uso corretto di `new` e `constructor`. |
| `noMisplacedAssertion` | `error` | Controlla che la funzione di asserzione, per esempio expect, sia posizionata dentro una chiamata `it()`. |
| `noMisrefactoredShorthandAssign` | `error` | Vietare assegnazioni shorthand quando la variabile appare su entrambi i lati. |
| `noOctalEscape` | `error` | Vietare sequenze di escape ottali nelle stringhe. |
| `noPrototypeBuiltins` | `error` | Vietare l'uso diretto dei builtins di `Object.prototype`. |
| `noQuickfixBiome` | `error` | Vietare l'uso di `quickfix.biome` all'interno del file di impostazioni dell'editor. |
| `noRedeclare` | `error` | Vietare redeclare di variabili, funzioni, classi e tipi nello stesso scope. |
| `noRedundantUseStrict` | `error` | Prevenire l'uso ridondante di `use strict`. |
| `noSelfCompare` | `error` | Vietare confronti dove entrambi i lati sono esattamente uguali. |
| `noShadowRestrictedNames` | `error` | Vietare identificatori che ombreggiano nomi riservati. |
| `noShorthandPropertyOverrides` | `error` | Vietare proprietà shorthand che sovrascrivono relative longhand (CSS). |
| `noSkippedTests` | `error` | Vietare test disabilitati. |
| `noSparseArray` | `error` | Prevenire l'uso di array sparsi (array con buchi). |
| `noTemplateCurlyInString` | `error` | Vietare la sintassi del placeholder dei template literal nelle stringhe normali. |
| `noThenProperty` | `error` | Vietare la proprietà then. |
| `noTsIgnore` | `error` | Prevenire l'uso della direttiva TypeScript `@ts-ignore`. |
| `noUnassignedVariables` | `error` | Vietare variabili let o var che vengono lette ma mai assegnate. |
| `noUnknownAtRules` | `error` | Vietare at-rule sconosciute (CSS). |
| `noUnsafeDeclarationMerging` | `error` | Vietare unione di dichiarazioni non sicure tra interfacce e classi. |
| `noUnsafeNegation` | `error` | Vietare l'uso di negazione non sicura (`!`). |
| `noUselessEscapeInString` | `error` | Vietare escape non necessari nelle stringhe. |
| `noUselessRegexBackrefs` | `error` | Vietare backreference inutili nelle espressioni regolari che corrispondono sempre a una stringa vuota. |
| `noVar` | `error` | Vietare l'uso di `var`. |
| `noWith` | `error` | Vietare le istruzioni `with` in contesti non strict. |
| `useAdjacentOverloadSignatures` | `error` | Vietare l'uso di overload signatures che non sono adiacenti tra loro. |
| `useAwait` | `error` | Assicurare che le funzioni async utilizzino `await`. |
| `useBiomeIgnoreFolder` | `error` | Promuove l'uso corretto per ignorare cartelle nel file di configurazione. |
| `useDefaultSwitchClauseLast` | `error` | Imporre che la clausola default negli switch sia l'ultima. |
| `useErrorMessage` | `error` | Imporre il passaggio di un messaggio quando si crea un errore built-in. |
| `useGetterReturn` | `error` | Imporre che i metodi get restituiscano sempre un valore. |
| `useGoogleFontDisplay` | `error` | Impone l'uso di una strategia di display raccomandata con Google Fonts. |
| `useGuardForIn` | `error` | Richiedere che i for-in includano un'istruzione `if`. |
| `useIsArray` | `error` | Usare `Array.isArray()` invece di `instanceof Array`. |
| `useIterableCallbackReturn` | `error` | Imporre valori di ritorno coerenti nei callback iterabili. |
| `useNamespaceKeyword` | `error` | Richiedere l'uso della keyword namespace invece della keyword `module` per dichiarare namespace TypeScript. |
| `useNumberToFixedDigitsArgument` | `error` | Imporre l'uso dell'argomento digits con `Number#toFixed()`. |
| `useStaticResponseMethods` | `error` | Usare metodi statici di `Response` invece del costruttore `new Response()` quando possibile. |
| `useStrictMode` | `error` | Imporre l'uso della direttiva `use strict` nei file script. |

## Note

Alcune regole sono disabilitate perché troppo lente da eseguire con lo Scanner. Come notato nella [documentazione di Biome](https://biomejs.dev/guides/investigate-slowness/#first-things-first), le regole di progetto abilitate sono note per causare overhead di prestazioni in cambio di analisi più avanzate.

Nei nostri test, abbiamo scoperto che queste regole possono fare la differenza tra 300ms e 13s di lint.